home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / yacc / occam.lha / occam / test3 < prev    next >
Text File  |  1989-08-22  |  1KB  |  80 lines

  1.   -- this is a comprehensive exercise of occam syntax
  2.         -- pjmp @ hrc 31/7/86
  3. VAR fred, joe[BYTE - #fAf], bill[ (20>>2)/\#0F]:
  4. VAR heinz:
  5. CHAN mary,jane[TRUE]:
  6. CHAN sue:
  7. DEF one =1, alphabet="abcdefghijklmnopq"
  8. "rstuvwxyz":
  9. DEF Tablet   = TABLE [ BYTE 0 ]:
  10.  
  11. PROC time =
  12.   mary!NOW
  13. :
  14.  
  15. PROC relay ( CHAN from, to, VAR via ) =
  16.   SEQ
  17.     from?via
  18.     to!via
  19. :
  20.  
  21. PROC zilch ( VALUE t[] ) =
  22.   SKIP
  23. :
  24.  
  25. WHILE NOT FALSE
  26.  
  27.   SEQ
  28.     time
  29.     bill[0]   := TABLE [ 2, 3, 5, 7, 11, 13, 17, 19, 23] [fred]
  30.     WAIT NOW AFTER bill[joe[BYTE 0]]
  31.  
  32.     VAR cats, dogs:
  33.     CHAN raining[ one ]:
  34.     PAR WHICH = [ 0 FOR one ]
  35.       relay( raining[ cats AND dogs], jane[WHICH], alphabet[WHICH] )
  36.  
  37.     zilch( "abc"[2] )
  38.  
  39.     SEQ
  40.  
  41.     mary!ANY
  42.  
  43.     CHAN jane:
  44.     jane?ANY
  45.  
  46.     PAR
  47.  
  48.     VAR john,tarzan:
  49.     CHAN janet,jane:
  50.     PAR
  51.       janet?john;john
  52.       jane!tarzan; tarzan
  53.  
  54.     IF
  55.       'a' << #2
  56.         IF
  57.  
  58.       IF
  59.         '**' >> ( 1 OR 2 )
  60.           IF fred = [ 0 FOR '*#FF' ]
  61.             fred <> ( alphabet[ fred >< bill[ fred /\ bill [ fred \/ fred ]]] )
  62.               joe := (fred>0) AND (fred<100) AND (fred>='a') AND (fred<='-')
  63.  
  64.     VAR then:
  65.     ALT fred = [ 1+1+1 FOR 2*2*(2-1)+(4\2)*(2/2) ]
  66.       ALT
  67.         ALT
  68.         SKIP
  69.           SKIP
  70.         fred = 3 & SKIP
  71.           SKIP
  72.         fred >3 & WAIT NOW
  73.           SKIP
  74.         WAIT NOW AFTER then
  75.           SKIP
  76.         fred < 20 & mary?ANY
  77.           then := NOW
  78.         jane[fred]?then
  79.           then := then + 4
  80.